package iamutkarshtiwari.github.io.ananas.editimage.utils;


import java.util.Arrays;

public class Matrix3 {
    private final float[] data;

    /**
     * 初始化data
     */
    public Matrix3() {
        data = new float[9];
    }


    /**
     * 初始化。并给矩阵赋值
     *
     * @param values 矩阵的值
     */
    public Matrix3(float[] values) {
        this();
        setValues(values);
    }

    /**
     * 设置矩阵的值
     *
     * @param values 矩阵的值
     */
    public void setValues(float[] values) {
//        for (int i = 0, len = values.length; i < len; i++) {
//            data[i] = values[i];
//        }
        System.arraycopy(values, 0, data, 0, values.length);
    }

    /**
     * 获取矩阵的值
     *
     * @return 矩阵的值
     */
    public float[] getValues() {
        float[] retValues = new float[9];
        System.arraycopy(data, 0, retValues, 0, 9);
        return retValues;
    }

    /**
     * 复制矩阵的值
     *
     * @return 矩阵
     */
    public Matrix3 copy() {
        return new Matrix3(getValues());
    }

    /**
     * 矩阵换算
     *
     * @return 换算后的矩阵
     */
    public Matrix3 inverseMatrix() {
        float[] values = this.copy().getValues();
        float sx = values[0];
        float sy = values[4];
        values[0] = 1 / sx;
        values[1] = 0;
        values[2] = (-1) * (data[2] / sx);
        values[3] = 0;
        values[4] = 1 / sy;
        values[5] = (-1) * (data[5] / sy);
        values[6] = 0;
        values[7] = 0;
        values[8] = 1;
        return new Matrix3(values);
    }
}
